package service

import (
	"fmt"
	"log"
	"projorg/model"
	"time"

	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
)

var (
	// MyDB ...
	MyDB *gorm.DB
)

// ConnectDB ...
func ConnectDB() {
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
		GetConfiguration().Mysql.Username,
		GetConfiguration().Mysql.Password,
		GetConfiguration().Mysql.Host,
		GetConfiguration().Mysql.Port,
		GetConfiguration().Mysql.Database,
	)
	db, err := gorm.Open("mysql", dsn)
	if err != nil {
		log.Panicln("数据库连接报错，" + err.Error())
	}

	// 最大空闲数
	db.DB().SetMaxIdleConns(10)
	// 最大连接数
	db.DB().SetMaxOpenConns(50)
	// 最长连接时间
	db.DB().SetConnMaxLifetime(5 * time.Minute)
	// open log
	db.LogMode(true)
	MyDB = db

}

// DisConnectDB ...
func DisConnectDB() {
	if err := MyDB.Close(); err != nil {
		log.Panicln("关闭数据库报错" + err.Error())
	}
}

// DBMigrate ...
func DBMigrate() {
	// db.AutoMigrate
	MyDB.Debug().AutoMigrate(&model.Todo{})
}
